有一个散列:h={:a=>"val1",:b=>"val2",:c=>"val3"}我可以引用哈希值:h[:a],h[:c]但我想通过数字索引来引用:h[0]=>val1h[2]=>val3这可能吗? 最佳答案 h.values会给你一个请求的数组。>h.values#⇒[#[0]"val1",#[1]"val2",#[2]"val3"#]UPD虽然h[h.keys[0]]的答案被标记为正确,但我对基准测试有点好奇:h={:a=>"val1",:b=>"val2",:c=>"val3"}Benchmark.bmdo|x|x.repo
在重定向时推送错误消息的最佳方式是什么?我以前使用过几种方法,但它们都有问题。(1)在flash上传递错误的整个对象并使用error_messages_for:defdestroyif@item.destroyflash[:error_item]=@itemendredirect_tosome_other_controller_pathend我发现这个方法会导致cookie溢出。(2)传递单个错误信息:defdestroyif@item.destroyflash[:error]=@item.full_messages[0]endredirect_tosome_other_control
classUserhas_many:books我需要一个返回的查询:最近一本书具有:complete=>true的用户。即,如果用户最近的书有:complete=>false,我不希望它们出现在我的结果中。到目前为止我有什么User.joins(:books).merge(Book.where(:complete=>true))这是一个很有希望的开始,但没有给我需要的结果。我试过添加.order("created_ondesc").limit(1)到上述查询的末尾,但是当我期待很多结果时,我最终只得到一个结果。谢谢! 最佳答案 如果
正如标题所说,Google没有提供任何与此相关的有用信息。如何为Sinatra应用设置和配置HTTPS/SSL?如何创建HTTPS路由?我以前从未在我的应用程序中使用过HTTPS,也没有调整Rack或其他任何东西的经验,所以我很感谢详细的答案。 最佳答案 这似乎适合我:require'sinatra/base'require'webrick'require'webrick/https'require'openssl'CERT_PATH='/opt/myCA/server/'webrick_options={:Port=>8443,:
这对我来说是一个常见的、重复的习惯用法:使用正则表达式过滤一个数组,并返回一个子数组。我的方法看起来不太像Ruby(我来自Java)。我最终得到了很多看起来很像这样的方法。改进此代码的惯用Ruby方法是什么?defget_all_gifs(items_)output=Array.newfilter=/\.jpg$/items_.eachdo|item|nextifitem=~filteroutput 最佳答案 如果你想找到所有的动图:defget_all_gifs(files)files.select{|i|i[/\.gif$/]}
如果我有这个类:classAattr_accessor:b,:c,:dend和这段代码:a=A.newh={"b"=>10,"c"=>20,"d"=>30}是否可以直接从散列初始化对象,而不需要遍历每一对并调用instance_variable_set?像这样的东西:a=A.new(h)这应该会导致每个实例变量被初始化为在散列中具有相同名称的变量。 最佳答案 你可以在你的类上定义一个初始化函数:classAattr_accessor:b,:c,:ddefinitialize(h)h.each{|k,v|public_send("#{
我目前正在开发一个基于Rack的应用程序,并希望将所有文件请求(例如filename.filetype)重定向到指定的文件夹。Rack::Static仅支持对特殊文件夹(例如“/media”)的文件请求。我是否必须编写自己的Rack中间件或是否存在开箱即用的解决方案? 最佳答案 要将每个请求重定向到特定路径,请使用Rack::File(出于某种原因,最近的文档中没有此类,但它是stillpartof最新的Rack):runRack::File.new("/my/path")要重定向每个请求,并在目标目录中添加所有文件的HTML索引,
假设我有这个模型:classConversation如何在不使用枚举的数值或不必遍历每个对话的情况下找到所有事件对话?我尝试执行Conversation.where(status::active),但没有产生任何结果。想到的唯一解决方案是遍历所有对话并选择事件对话,但这看起来不是一个好的解决方案。Conversation.all.select{|conversation|conversation.active?}我能做些什么吗? 最佳答案 ActiveRecord::Enum提供基于其值的范围。试试看:Conversation.ac
我正在为Ruby使用mailgemhttps://github.com/mikel/mail如何通过smtp服务器发送电子邮件?如何指定地址和端口?我应该为Gmail使用什么设置?github上的README只给出了本地服务器发送的例子。 最佳答案 来自http://lindsaar.net/2010/3/15/how_to_use_mail_and_actionmailer_3_with_gmail_smtp要通过GMail发送,您需要将Mail::SMTP类配置为具有正确的值,因此要尝试此操作,请打开IRB并键入以下内容:req
我使用Activeadmin作为我的Rails应用程序后端。我想上传文件。我怎样才能完成这个功能? 最佳答案 我找到了一种将Paperclip与ActiveAdmin结合使用的方法。我在模型“事件”中添加了这段代码:has_attached_file:map,:styles=>{:medium=>"238x238>",:thumb=>"100x100>"}我为我的管理模型做了这个:ActiveAdmin.registerEventdoform:html=>{:enctype=>"multipart/form-data"}do|f|f